﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace 时钟壁纸应用.辅助类
{
    class 配置项
    {
        #region 引入INI读取函数
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);
        [DllImport("kernel32")]
        private static extern int WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString, string lpFileName);
        #endregion
        #region INI操作方法
        /// <summary>
        ///读取一个配置项，如果这个配置项中的值不存在返回一个默认值
        /// </summary>
        /// <param name="配置节名">配置节名</param>
        /// <param name="配置项名">配置项名</param>
        /// <param name="默认返回">如果这个配置项中的值不存在返回一个默认值</param>
        /// <param name="配置项文件">指定一个配置项的文件路径</param>
        /// <returns></returns>
        public string 读取(string 配置项文件, string 配置节名, string 配置项名, string 默认返回)
        {
            if (File.Exists(配置项文件))
            {
                StringBuilder temp = new StringBuilder(1024);
                GetPrivateProfileString(配置节名, 配置项名, 默认返回, temp, 1024, 配置项文件);
                return temp.ToString();
            }
            else
            {
                return 默认返回;
            }
        }
        /// <summary>
        /// 写配置项，返回True或者Flase
        /// </summary>
        /// <param name="配置项路径">输入目标文件路径</param>
        /// <param name="配置节名">配置节名 [ ]内的文字</param>
        /// <param name="配置项名">配置项名 = 前的文字</param>
        /// <param name="值">配置值 = 后的文字</param>
        /// <returns></returns>
        public bool 写入(string 配置项路径, string 配置节名, string 配置项名, string 值)
        {
            var pat = System.IO.Path.GetDirectoryName(配置项路径);
            if (Directory.Exists(pat) == false)
            {
                Directory.CreateDirectory(pat);
            }
            if (File.Exists(配置项路径) == false)
            {
                File.Create(配置项路径).Close();
            }
            long OpStation = WritePrivateProfileString(配置节名, 配置项名, 值, 配置项路径);
            if (OpStation == 0)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        #endregion
    }
}
